home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / glibc108.zip / glibc108 / sysdeps / mach / hurd / ioctls.h < prev    next >
C/C++ Source or Header  |  1994-06-05  |  14KB  |  324 lines

  1. /* Copyright (C) 1992, 1993 Free Software Foundation, Inc.
  2. This file is part of the GNU C Library.
  3.  
  4. The GNU C Library is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU Library General Public License as
  6. published by the Free Software Foundation; either version 2 of the
  7. License, or (at your option) any later version.
  8.  
  9. The GNU C Library is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12. Library General Public License for more details.
  13.  
  14. You should have received a copy of the GNU Library General Public
  15. License along with the GNU C Library; see the file COPYING.LIB.  If
  16. not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  17. Cambridge, MA 02139, USA.  */
  18.  
  19. #ifndef    _IOCTLS_H
  20.  
  21. #define    _IOCTLS_H    1
  22.  
  23. /* Hurd ioctl request are made up of several fields:
  24.      bits 31-30: inout direction (enum __ioctl_dir)
  25.      bits 29-12: type encoding as follows; zero count indicates omitted datum
  26.       29-28: datum #0 type (enum __ioctl_datum)
  27.       27-26: datum #1 type (enum __ioctl_datum)
  28.       25-24: datum #2 type (enum __ioctl_datum)
  29.       23-19: datum #0 count    [0..31]
  30.       18-14: datum #1 count [0..31]
  31.       13-12: datum #2 count [0..3]
  32.      bits 11- 8: group (letter - 'f': ['f'..'v'])
  33.      bits  7- 0: command    [0..127]
  34.  
  35.    The following macros construct and dissect these fields.  */
  36.  
  37. enum __ioctl_dir
  38.   {
  39.     IOC_VOID = 0,        /* No parameters.  */
  40.     IOC_OUT = 1,        /* Data is written into the user's buffer.  */
  41.     IOC_IN = 2,            /* Data is read from the user's buffer.  */
  42.     IOC_INOUT = (IOC_IN|IOC_OUT)
  43.   };
  44.  
  45. enum __ioctl_datum { IOC_8, IOC_16, IOC_32 };
  46.  
  47. /* Construct an ioctl from constructed type plus other fields.  */
  48. #define    _IOC(inout, group, num, type) \
  49.   ((num) | ((((group) - 'f') | ((type) | (inout) << 19) << 4) << 7))
  50.  
  51. /* Dissect an ioctl into its component fields.  */
  52. #define _IOC_INOUT(request)    (((unsigned int) (request) >> 30) & IOC_INOUT)
  53. #define _IOC_GROUP(request)    ('f' + (((unsigned int) (request) >> 7) & 15))
  54. #define _IOC_COMMAND(request)    ((unsigned int) (request) & 0x7f)
  55. #define _IOC_TYPE(request)    (((unsigned int) (request) >> 11) & 0x7ffff)
  56.  
  57. /* Construct a type information field from
  58.    the broken-out type and count fields.  */
  59. #define    _IOT(t0, c0, t1, c1, t2, c2) \
  60.   ((c2) | (((c1) | ((c0) | ((t2) | ((t1) | (t0) << 2) << 2) << 5) << 5) << 3))
  61.  
  62. /* Dissect a type information field into the type and count fields.  */
  63. #define    _IOT_TYPE0(type)    (((unsigned int) (type) >> 17) & 3)
  64. #define    _IOT_TYPE1(type)    (((unsigned int) (type) >> 15) & 3)
  65. #define    _IOT_TYPE2(type)    (((unsigned int) (type) >> 13) & 3)
  66. #define    _IOT_COUNT0(type)    (((unsigned int) (type) >> 8) & 0x1f)
  67. #define    _IOT_COUNT1(type)    (((unsigned int) (type) >> 3) & 0x1f)
  68. #define    _IOT_COUNT2(type)    (((unsigned int) (type) >> 0) & 3)
  69.  
  70. /* Construct an ioctl from all the broken-out fields.  */
  71. #define    _IOCT(inout, group, num, t0, c0, t1, c1, t2, c2)              \
  72.   _IOC ((inout), (group), (num), _IOT ((t0), (c0), (t1), (c1), (t2), (c2)))
  73.  
  74. /* Standard flavors of ioctls.
  75.    _IOT_foobar is defined either in this file,
  76.    or where struct foobar is defined.  */
  77. #define    _IO(g, n)    _IOC (IOC_VOID, (g), (n), 0)
  78. #define    _IOR(g, n, t)    _IOC (IOC_OUT, (g), (n), _IOT_##t)
  79. #define    _IOW(g, n, t)    _IOC (IOC_IN, (g), (n), _IOT_##t)
  80. #define    _IOWR(g, n, t)    _IOC (IOC_INOUT, (g), (n), _IOT_##t)
  81.  
  82. /* Construct an individual type field for TYPE.  */
  83. #define _IOTS(type)        (sizeof (type) >> 1)
  84.  
  85. /* Construct a type information field for
  86.    a single argument of the scalar TYPE.  */
  87. #define    _IOT_SIMPLE(type)    _IOT (_IOTS (type), 1, 0, 0, 0, 0)
  88.  
  89. /* Basic C types.  */
  90. #define    _IOT_int        _IOT_SIMPLE (int)
  91. #define    _IOT_char        _IOT_SIMPLE (char)
  92. #define    _IOT_short        _IOT_SIMPLE (short)
  93.  
  94.  
  95. /* ioctls verbatim from 4.4 <sys/ioctl.h>, with `struct' keywords removed.  */
  96.  
  97. #define    TIOCMODG    _IOR('t', 3, int)    /* get modem control state */
  98. #define    TIOCMODS    _IOW('t', 4, int)    /* set modem control state */
  99. #define        TIOCM_LE    0001        /* line enable */
  100. #define        TIOCM_DTR    0002        /* data terminal ready */
  101. #define        TIOCM_RTS    0004        /* request to send */
  102. #define        TIOCM_ST    0010        /* secondary transmit */
  103. #define        TIOCM_SR    0020        /* secondary receive */
  104. #define        TIOCM_CTS    0040        /* clear to send */
  105. #define        TIOCM_CAR    0100        /* carrier detect */
  106. #define        TIOCM_CD    TIOCM_CAR
  107. #define        TIOCM_RNG    0200        /* ring */
  108. #define        TIOCM_RI    TIOCM_RNG
  109. #define        TIOCM_DSR    0400        /* data set ready */
  110.                         /* 8-10 compat */
  111. #define    TIOCEXCL    _IO('t', 13)        /* set exclusive use of tty */
  112. #define    TIOCNXCL    _IO('t', 14)        /* reset exclusive use of tty */
  113.                         /* 15 unused */
  114. #define    TIOCFLUSH    _IOW('t', 16, int)    /* flush buffers */
  115.                         /* 17-18 compat */
  116. #define    TIOCGETA    _IOR('t', 19, termios) /* get termios struct */
  117. #define    TIOCSETA    _IOW('t', 20, termios) /* set termios struct */
  118. #define    TIOCSETAW    _IOW('t', 21, termios) /* drain output, set */
  119. #define    TIOCSETAF    _IOW('t', 22, termios) /* drn out, fls in, set */
  120. #define    TIOCGETD    _IOR('t', 26, int)    /* get line discipline */
  121. #define    TIOCSETD    _IOW('t', 27, int)    /* set line discipline */
  122.                         /* 127-124 compat */
  123. #define    TIOCSBRK    _IO('t', 123)        /* set break bit */
  124. #define    TIOCCBRK    _IO('t', 122)        /* clear break bit */
  125. #define    TIOCSDTR    _IO('t', 121)        /* set data terminal ready */
  126. #define    TIOCCDTR    _IO('t', 120)        /* clear data terminal ready */
  127. #define    TIOCGPGRP    _IOR('t', 119, int)    /* get pgrp of tty */
  128. #define    TIOCSPGRP    _IOW('t', 118, int)    /* set pgrp of tty */
  129.                         /* 117-116 compat */
  130. #define    TIOCOUTQ    _IOR('t', 115, int)    /* output queue size */
  131. #define    TIOCSTI        _IOW('t', 114, char)    /* simulate terminal input */
  132. #define    TIOCNOTTY    _IO('t', 113)        /* void tty association */
  133. #define    TIOCPKT        _IOW('t', 112, int)    /* pty: set/clear packet mode */
  134. #define        TIOCPKT_DATA        0x00    /* data packet */
  135. #define        TIOCPKT_FLUSHREAD    0x01    /* flush packet */
  136. #define        TIOCPKT_FLUSHWRITE    0x02    /* flush packet */
  137. #define        TIOCPKT_STOP        0x04    /* stop output */
  138. #define        TIOCPKT_START        0x08    /* start output */
  139. #define        TIOCPKT_NOSTOP        0x10    /* no more ^S, ^Q */
  140. #define        TIOCPKT_DOSTOP        0x20    /* now do ^S ^Q */
  141. #define        TIOCPKT_IOCTL        0x40    /* state change of pty driver */
  142. #define    TIOCSTOP    _IO('t', 111)        /* stop output, like ^S */
  143. #define    TIOCSTART    _IO('t', 110)        /* start output, like ^Q */
  144. #define    TIOCMSET    _IOW('t', 109, int)    /* set all modem bits */
  145. #define    TIOCMBIS    _IOW('t', 108, int)    /* bis modem bits */
  146. #define    TIOCMBIC    _IOW('t', 107, int)    /* bic modem bits */
  147. #define    TIOCMGET    _IOR('t', 106, int)    /* get all modem bits */
  148. #define    TIOCREMOTE    _IOW('t', 105, int)    /* remote input editing */
  149. #define    TIOCGWINSZ    _IOR('t', 104, winsize)    /* get window size */
  150. #define    TIOCSWINSZ    _IOW('t', 103, winsize)    /* set window size */
  151. #define    TIOCUCNTL    _IOW('t', 102, int)    /* pty: set/clr usr cntl mode */
  152. #define        UIOCCMD(n)    _IO('u', n)        /* usr cntl op "n" */
  153. #define    TIOCCONS    _IOW('t', 98, int)        /* become virtual console */
  154. #define    TIOCSCTTY    _IO('t', 97)        /* become controlling tty */
  155. #define    TIOCEXT        _IOW('t', 96, int)    /* pty: external processing */
  156. #define    TIOCSIG        _IO('t', 95)        /* pty: generate signal */
  157. #define TIOCDRAIN    _IO('t', 94)        /* wait till output drained */
  158.  
  159. #define TTYDISC        0        /* termios tty line discipline */
  160. #define    TABLDISC    3        /* tablet discipline */
  161. #define    SLIPDISC    4        /* serial IP discipline */
  162.  
  163.  
  164. #define    FIOCLEX        _IO('f', 1)        /* set close on exec on fd */
  165. #define    FIONCLEX    _IO('f', 2)        /* remove close on exec */
  166. #define    FIONREAD    _IOR('f', 127, int)    /* get # bytes to read */
  167. #define    FIONBIO        _IOW('f', 126, int)    /* set/clear non-blocking i/o */
  168. #define    FIOASYNC    _IOW('f', 125, int)    /* set/clear async i/o */
  169. #define    FIOSETOWN    _IOW('f', 124, int)    /* set owner */
  170. #define    FIOGETOWN    _IOR('f', 123, int)    /* get owner */
  171.  
  172. /* socket i/o controls */
  173. #define    SIOCSHIWAT    _IOW('s',  0, int)        /* set high watermark */
  174. #define    SIOCGHIWAT    _IOR('s',  1, int)        /* get high watermark */
  175. #define    SIOCSLOWAT    _IOW('s',  2, int)        /* set low watermark */
  176. #define    SIOCGLOWAT    _IOR('s',  3, int)        /* get low watermark */
  177. #define    SIOCATMARK    _IOR('s',  7, int)        /* at oob mark? */
  178. #define    SIOCSPGRP    _IOW('s',  8, int)        /* set process group */
  179. #define    SIOCGPGRP    _IOR('s',  9, int)        /* get process group */
  180.  
  181. #define    SIOCADDRT    _IOW('r', 10, ortentry)    /* add route */
  182. #define    SIOCDELRT    _IOW('r', 11, ortentry)    /* delete route */
  183.  
  184. #define    SIOCSIFADDR    _IOW('i', 12, ifreq)    /* set ifnet address */
  185. #define    OSIOCGIFADDR    _IOWR('i',13, ifreq)    /* get ifnet address */
  186. #define    SIOCGIFADDR    _IOWR('i',33, ifreq)    /* get ifnet address */
  187. #define    SIOCSIFDSTADDR    _IOW('i', 14, ifreq)    /* set p-p address */
  188. #define    OSIOCGIFDSTADDR    _IOWR('i',15, ifreq)    /* get p-p address */
  189. #define    SIOCGIFDSTADDR    _IOWR('i',34, ifreq)    /* get p-p address */
  190. #define    SIOCSIFFLAGS    _IOW('i', 16, ifreq)    /* set ifnet flags */
  191. #define    SIOCGIFFLAGS    _IOWR('i',17, ifreq)    /* get ifnet flags */
  192. #define    OSIOCGIFBRDADDR    _IOWR('i',18, ifreq)    /* get broadcast addr */
  193. #define    SIOCGIFBRDADDR    _IOWR('i',35, ifreq)    /* get broadcast addr */
  194. #define    SIOCSIFBRDADDR    _IOW('i',19, ifreq)    /* set broadcast addr */
  195. #define    OSIOCGIFCONF    _IOWR('i',20, ifconf)    /* get ifnet list */
  196. #define    SIOCGIFCONF    _IOWR('i',36, ifconf)    /* get ifnet list */
  197. #define    OSIOCGIFNETMASK    _IOWR('i',21, ifreq)    /* get net addr mask */
  198. #define    SIOCGIFNETMASK    _IOWR('i',37, ifreq)    /* get net addr mask */
  199. #define    SIOCSIFNETMASK    _IOW('i',22, ifreq)    /* set net addr mask */
  200. #define    SIOCGIFMETRIC    _IOWR('i',23, ifreq)    /* get IF metric */
  201. #define    SIOCSIFMETRIC    _IOW('i',24, ifreq)    /* set IF metric */
  202. #define    SIOCDIFADDR    _IOW('i',25, ifreq)    /* delete IF addr */
  203. #define    SIOCAIFADDR    _IOW('i',26, ifaliasreq)    /* add/chg IF alias */
  204.  
  205. #define    SIOCSARP    _IOW('i', 30, arpreq)    /* set arp entry */
  206. #define    OSIOCGARP    _IOWR('i',31, arpreq)    /* get arp entry */
  207. #define    SIOCGARP    _IOWR('i',38, arpreq)    /* get arp entry */
  208. #define    SIOCDARP    _IOW('i', 32, arpreq)    /* delete arp entry */
  209.  
  210.  
  211. /* Compatibility with 4.3 BSD terminal driver.
  212.    From 4.4 <sys/ioctl_compat.h>.  */
  213.  
  214. #ifdef USE_OLD_TTY
  215. # undef  TIOCGETD
  216. # define TIOCGETD    _IOR('t', 0, int)    /* get line discipline */
  217. # undef  TIOCSETD
  218. # define TIOCSETD    _IOW('t', 1, int)    /* set line discipline */
  219. #else
  220. # define OTIOCGETD    _IOR('t', 0, int)    /* get line discipline */
  221. # define OTIOCSETD    _IOW('t', 1, int)    /* set line discipline */
  222. #endif
  223. #define    TIOCHPCL    _IO('t', 2)        /* hang up on last close */
  224. #define    TIOCGETP    _IOR('t', 8,sgttyb)/* get parameters -- gtty */
  225. #define    TIOCSETP    _IOW('t', 9,sgttyb)/* set parameters -- stty */
  226. #define    TIOCSETN    _IOW('t',10,sgttyb)/* as above, but no flushtty*/
  227. #define    TIOCSETC    _IOW('t',17,tchars)/* set special characters */
  228. #define    TIOCGETC    _IOR('t',18,tchars)/* get special characters */
  229. #define        TANDEM        0x00000001    /* send stopc on out q full */
  230. #define        CBREAK        0x00000002    /* half-cooked mode */
  231. #define        LCASE        0x00000004    /* simulate lower case */
  232. #define        ECHO        0x00000008    /* echo input */
  233. #define        CRMOD        0x00000010    /* map \r to \r\n on output */
  234. #define        RAW        0x00000020    /* no i/o processing */
  235. #define        ODDP        0x00000040    /* get/send odd parity */
  236. #define        EVENP        0x00000080    /* get/send even parity */
  237. #define        ANYP        0x000000c0    /* get any parity/send none */
  238. #define        NLDELAY        0x00000300    /* \n delay */
  239. #define            NL0    0x00000000
  240. #define            NL1    0x00000100    /* tty 37 */
  241. #define            NL2    0x00000200    /* vt05 */
  242. #define            NL3    0x00000300
  243. #define        TBDELAY        0x00000c00    /* horizontal tab delay */
  244. #define            TAB0    0x00000000
  245. #define            TAB1    0x00000400    /* tty 37 */
  246. #define            TAB2    0x00000800
  247. #define        XTABS        0x00000c00    /* expand tabs on output */
  248. #define        CRDELAY        0x00003000    /* \r delay */
  249. #define            CR0    0x00000000
  250. #define            CR1    0x00001000    /* tn 300 */
  251. #define            CR2    0x00002000    /* tty 37 */
  252. #define            CR3    0x00003000    /* concept 100 */
  253. #define        VTDELAY        0x00004000    /* vertical tab delay */
  254. #define            FF0    0x00000000
  255. #define            FF1    0x00004000    /* tty 37 */
  256. #define        BSDELAY        0x00008000    /* \b delay */
  257. #define            BS0    0x00000000
  258. #define            BS1    0x00008000
  259. #define        ALLDELAY    (NLDELAY|TBDELAY|CRDELAY|VTDELAY|BSDELAY)
  260. #define        CRTBS        0x00010000    /* do backspacing for crt */
  261. #define        PRTERA        0x00020000    /* \ ... / erase */
  262. #define        CRTERA        0x00040000    /* " \b " to wipe out char */
  263. #define        TILDE        0x00080000    /* hazeltine tilde kludge */
  264. #define        MDMBUF        0x00100000    /*start/stop output on carrier*/
  265. #define        LITOUT        0x00200000    /* literal output */
  266. #define        TOSTOP        0x00400000    /*SIGSTOP on background output*/
  267. #define        FLUSHO        0x00800000    /* flush output to terminal */
  268. #define        NOHANG        0x01000000    /* (no-op) was no SIGHUP on carrier drop */
  269. #define        L001000        0x02000000
  270. #define        CRTKIL        0x04000000    /* kill line with " \b " */
  271. #define        PASS8        0x08000000
  272. #define        CTLECH        0x10000000    /* echo control chars as ^X */
  273. #define        PENDIN        0x20000000    /* tp->t_rawq needs reread */
  274. #define        DECCTQ        0x40000000    /* only ^Q starts after ^S */
  275. #define        NOFLSH        0x80000000    /* no output flush on signal */
  276. #define    TIOCLBIS    _IOW('t', 127, int)    /* bis local mode bits */
  277. #define    TIOCLBIC    _IOW('t', 126, int)    /* bic local mode bits */
  278. #define    TIOCLSET    _IOW('t', 125, int)    /* set entire local mode word */
  279. #define    TIOCLGET    _IOR('t', 124, int)    /* get local modes */
  280. #define        LCRTBS        (CRTBS>>16)
  281. #define        LPRTERA        (PRTERA>>16)
  282. #define        LCRTERA        (CRTERA>>16)
  283. #define        LTILDE        (TILDE>>16)
  284. #define        LMDMBUF        (MDMBUF>>16)
  285. #define        LLITOUT        (LITOUT>>16)
  286. #define        LTOSTOP        (TOSTOP>>16)
  287. #define        LFLUSHO        (FLUSHO>>16)
  288. #define        LNOHANG        (NOHANG>>16)
  289. #define        LCRTKIL        (CRTKIL>>16)
  290. #define        LPASS8        (PASS8>>16)
  291. #define        LCTLECH        (CTLECH>>16)
  292. #define        LPENDIN        (PENDIN>>16)
  293. #define        LDECCTQ        (DECCTQ>>16)
  294. #define        LNOFLSH        (NOFLSH>>16)
  295. #define    TIOCSLTC    _IOW('t',117,ltchars)/* set local special chars*/
  296. #define    TIOCGLTC    _IOR('t',116,ltchars)/* get local special chars*/
  297. #define OTIOCCONS    _IO('t', 98)    /* for hp300 -- sans int arg */
  298. #define    OTTYDISC    0
  299. #define    NETLDISC    1
  300. #define    NTTYDISC    2
  301.  
  302. /* From 4.4 <sys/ttydev.h>.   */
  303. #ifdef USE_OLD_TTY
  304. #define B0    0
  305. #define B50    1
  306. #define B75    2
  307. #define B110    3
  308. #define B134    4
  309. #define B150    5
  310. #define B200    6
  311. #define B300    7
  312. #define B600    8
  313. #define B1200    9
  314. #define    B1800    10
  315. #define B2400    11
  316. #define B4800    12
  317. #define B9600    13
  318. #define EXTA    14
  319. #define EXTB    15
  320. #endif /* USE_OLD_TTY */
  321.  
  322.  
  323. #endif /* ioctls.h */
  324.